package org.Yiran.timetale_re.item.sheet.base;

import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.Yiran.timetale_re.item.base.DescriptiveItem;
import org.Yiran.timetale_re.util.item.TooltipUtils;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nullable;
import java.util.List;

/**
 * 金属板物品基类
 * <p>
 * 这个类是所有金属板物品的基类，提供了通用的属性和方法。
 * 金属板通常用于制作工具、机械和其他高级物品。
 * </p>
 */
public class MetalSheetItemBase extends DescriptiveItem {

    // 金属板的材料名称
    private final String materialName;
    
    // 金属板的等级（硬度、耐久等属性）
    private final int grade;

    /**
     * 构造函数
     *
     * @param materialName 材料名称
     * @param grade        等级
     */
    public MetalSheetItemBase(String materialName, int grade) {
        super(new Item.Properties());
        this.materialName = materialName;
        this.grade = grade;
    }

    /**
     * 获取材料名称
     *
     * @return 材料名称
     */
    public String getMaterialName() {
        return materialName;
    }

    /**
     * 获取等级
     *
     * @return 等级
     */
    public int getGrade() {
        return grade;
    }

    /**
     * 添加工具提示信息
     * <p>
     * 在客户端环境中为物品添加工具提示信息。
     * </p>
     *
     * @param stack 物品堆栈
     * @param level 世界对象
     * @param tooltip 工具提示列表
     * @param flag 工具提示标志
     */
    @Override
    @OnlyIn(Dist.CLIENT)
    public void appendHoverText(@NotNull ItemStack stack, @Nullable Level level, @NotNull List<Component> tooltip, @NotNull TooltipFlag flag) {
        // 添加基础描述
        TooltipUtils.addBaseDescription(tooltip, this.getDescriptionId());
    }
}